using System;
using System.Collections.Generic;

namespace CMS.Core.Domain
{
    /// <summary>
    /// DonThu object for NHibernate mapped table DonThu.
    /// </summary>
    [Serializable]
    public class DonThu : DomainObject<System.String>
    {
        private System.String _SoThuLy;
        private System.DateTime? _DonDeNgay;
        private System.DateTime _NgayGui;
        private System.String _HoTen;
        private System.Byte _LanGui;
        private System.String _DiaChi;
        private System.Int32 _MaDiaBan;
        private System.Int32 _MaNguoiGui;       
        private System.Int32 _MaLoaiDon;
        private System.Int32 _MaLinhVuc;
        private System.Int32 _MaNguonTiepDon;
        private System.String _NoiDung;
        private System.Int32? _LoaiHinh;
        private System.String _NoiDen;
        private System.String _DSTapTheDeDon;
        private System.String _NguoiNhanDon;
        /*---lay noi dung chuyen tiep vao */
        private System.DateTime? _NgayHoanThanh;
        private System.DateTime? _NgayNhanKQ;
        private System.String _VBGNV;
        private System.String _DonViGiaiQuyet;
        private System.String _KetQuaGiaiQuyet;
        private LinhVuc _LinhVuc;
        private NguonTiepDon _NguonTiepDonLookup;
        private DiaBan _DiaBan;
        private LoaiDon _LoaiDon;
        private IList<ChuyenTiep> _ChuyenTieps = new List<ChuyenTiep>();
        private NguoiGuiDon _NguoiGuiLookup;

        public DonThu()
        {
            base.id = Guid.NewGuid().ToString().ToUpper();
        }

        public DonThu(System.String id)
        {
            base.ID = id;
        }        

        public virtual System.String SoThuLy
        {
            get { return _SoThuLy; }
            set { _SoThuLy = value; }
        }

        public virtual System.DateTime? DonDeNgay
        {
            get { return _DonDeNgay; }
            set { _DonDeNgay = value; }
        }

        public virtual System.DateTime NgayGui
        {
            get { return _NgayGui; }
            set { _NgayGui = value; }
        }

        public virtual System.String HoTen
        {
            get { return _HoTen; }
            set { _HoTen = value; }
        }

        public virtual System.Byte LanGui
        {
            get { return _LanGui; }
            set { _LanGui = value; }
        }

        public virtual System.String DiaChi
        {
            get { return _DiaChi; }
            set { _DiaChi = value; }
        }

        public virtual System.Int32 MaDiaBan
        {
            get { return _MaDiaBan; }
            set { _MaDiaBan = value; }
        }

        public virtual System.Int32 MaNguoiGui
        {
            get { return _MaNguoiGui; }
            set { _MaNguoiGui = value; }
        }

        public virtual System.Int32 MaLoaiDon
        {
            get { return _MaLoaiDon; }
            set { _MaLoaiDon = value; }
        }

        public virtual System.Int32 MaLinhVuc
        {
            get { return _MaLinhVuc; }
            set { _MaLinhVuc = value; }
        }

        public virtual System.Int32 MaNguonTiepDon
        {
            get { return _MaNguonTiepDon; }
            set { _MaNguonTiepDon = value; }
        }                

        public virtual System.String NguoiNhanDon
        {
            get { return _NguoiNhanDon; }
            set { _NguoiNhanDon = value; }
        }

        public virtual System.String NoiDen
        {
            get { return _NoiDen; }
            set { _NoiDen = value; }
        }

        public virtual System.Int32? LoaiHinh
        {
            get { return _LoaiHinh; }
            set { _LoaiHinh = value; }
        }        

        public virtual System.String DSTapTheDeDon
        {
            get { return _DSTapTheDeDon; }
            set { _DSTapTheDeDon = value; }
        }         

         public virtual System.String NoiDung {
             get { return _NoiDung; }
             set { _NoiDung = value;}
         }            

         public virtual LinhVuc LinhVuc{
             get { return _LinhVuc; }
             set { _LinhVuc = value; }
         }
         public virtual DiaBan DiaBan
         {
             get { return _DiaBan; }
             set { _DiaBan = value; }
         }

         public virtual LoaiDon LoaiDon
         {
             get { return _LoaiDon; }
             set { _LoaiDon = value; }
         }
         public virtual IList<ChuyenTiep> ChuyenTieps
         {
             get { return _ChuyenTieps; }
             set { _ChuyenTieps = value; }
         }
         public virtual NguoiGuiDon NguoiGuiLookup
         {
             get { return _NguoiGuiLookup; }
             set { _NguoiGuiLookup = value; }
         }
        public virtual NguonTiepDon NguonTiepDonLookup
        {
            get { return _NguonTiepDonLookup; }
            set { _NguonTiepDonLookup = value; }
        }

        public virtual System.DateTime? NgayHoanThanh
        {
            get { return _NgayHoanThanh; }
            set { _NgayHoanThanh = value; }
        }
        public virtual System.DateTime? NgayNhanKQ
        {
            get { return _NgayNhanKQ; }
            set { _NgayNhanKQ = value; }
        }
        public virtual System.String VBGNV
        {
            get { return _VBGNV; }
            set { _VBGNV = value; }
        }
        public virtual System.String DonViGiaiQuyet
        {
            get { return _DonViGiaiQuyet; }
            set { _DonViGiaiQuyet = value; }
        }
        public virtual System.String KetQuaGiaiQuyet
        {
            get { return _KetQuaGiaiQuyet; }
            set { _KetQuaGiaiQuyet = value; }
        }
        
        public override int GetHashCode()
        {
            return ID.GetHashCode();
        }

     }
}
